/*
分类管理相关，可以用来创建除了
文章模块module： 0官方 1领养 2问答 3志愿 4其它 -1为通知
之外的别的分类
考虑到要实现的分类不多，此模块废弃
*/

package v1

import (
    "net/http"
    "strconv"

    "gitee.com/keeving/quanta-test-cat/model"
    "gitee.com/keeving/quanta-test-cat/utils/errmsg"
    "github.com/gin-gonic/gin"
)

// AddCategory 添加分类
func AddCategory(c *gin.Context) {
    var data model.Category
    _ = c.ShouldBindJSON(&data)
    code := model.CheckCategory(data.Name)
    if code == errmsg.SUCCESS {
        model.CreateCate(&data)
    }

    c.JSON(
        http.StatusOK, gin.H{
            "status":  code,
            "data":    data,
            "message": errmsg.GetErrMsg(code),
        },
    )
}

// GetCateInfo 查询分类信息
func GetCateInfo(c *gin.Context) {
    id, _ := strconv.Atoi(c.Param("id"))

    data, code := model.GetCateInfo(id)

    c.JSON(
        http.StatusOK, gin.H{
            "status":  code,
            "data":    data,
            "message": errmsg.GetErrMsg(code),
        },
    )

}

// GetCate 查询分类列表
func GetCate(c *gin.Context) {
    pageSize, _ := strconv.Atoi(c.Query("pagesize"))
    pageNum, _ := strconv.Atoi(c.Query("pagenum"))

    switch {
    case pageSize >= 100:
        pageSize = 100
    case pageSize <= 0:
        pageSize = 10
    }

    if pageNum == 0 {
        pageNum = 1
    }

    data, total := model.GetCate(pageSize, pageNum)
    code := errmsg.SUCCESS
    c.JSON(
        http.StatusOK, gin.H{
            "status":  code,
            "data":    data,
            "total":   total,
            "message": errmsg.GetErrMsg(code),
        },
    )
}

// 查询单个分类
//func GetCateInfo(c *gin.Context)  {
//    id, _ := strconv.Atoi(c.Param("id"))
//
//    data,code := model.GetCateInfo(id)
//
//    c.JSON(http.StatusOK, gin.H{
//        "status":  code,
//        "data":    data,
//        "message": errmsg.GetErrMsg(code),
//    })
//}

// EditCate 编辑分类名
func EditCate(c *gin.Context) {
    var data model.Category
    id, _ := strconv.Atoi(c.Param("id"))
    _ = c.ShouldBindJSON(&data)
    code := model.CheckCategory(data.Name)
    if code == errmsg.SUCCESS {
        model.EditCate(id, &data)
    }
    if code == errmsg.ERROR_CATENAME_USED {
        c.Abort()
    }

    c.JSON(
        http.StatusOK, gin.H{
            "status":  code,
            "message": errmsg.GetErrMsg(code),
        },
    )
}

// DeleteCate 删除分类
func DeleteCate(c *gin.Context) {
    id, _ := strconv.Atoi(c.Param("id"))

    code := model.DeleteCate(id)

    c.JSON(
        http.StatusOK, gin.H{
            "status":  code,
            "message": errmsg.GetErrMsg(code),
        },
    )
}
